Jupyterノートブックプロット#
Jupyter ノートで pyvista でインタラクティブにプロットします.
注釈
Trameベースの後援を使用することをお勧めします. PyVista用Jupyterバックエンドをtrame化する を参照してください.
pythreejs を使ったデモ#
pythreejs を使ってインタラクティブな物理ベースのレンダリングを行います.
import pyvista as pv
from pyvista import examples
# download an example and display it using physically based rendering.
mesh = examples.download_lucy()
mesh.plot(color='lightgrey', pbr=True, metallic=0.2,
jupyter_backend='pythreejs')
ipygany を使ったデモ#
from pyvista import demos
# basic glyphs demo
mesh = demos.glyphs(2)
text = demos.logo.text_3d("I'm interactive!", depth=0.2)
text.points *= 0.1
text.translate([0, 1.4, 1.5], inplace=True)
mesh += text
mesh['Example Scalars'] = mesh.points[:, 0]
mesh.plot(cpos='xy', jupyter_backend='ipygany', show_scalar_bar=True)
panel を使ったデモ#
from pyvista import demos
demos.plot_logo(jupyter_backend='panel')
サポートされるモジュール#
PyVistaモジュールは,Jupyterノートブック内でプロットする際のさまざまなバックエンドをサポートしています:
各バックエンドの詳細#
これらの描画バックエンドの使用方法の詳細については,各バックエンドの個々のパッケージページを参照してください.
3 D対話型Jupyterプロットの状態#
注釈
Jupyterノートブック内の3 Dプロットは,Jupyterがまだ比較的新しい技術であることもありますが,ここで使用されているWeb技術も新しい技術であり,ますます多くのユーザや開発者がクラウドやクラウドベースのビジュアライゼーションに移行しているため,急速に発展しています.ここにあるものは壊れ,急速に変化する可能性が高いです
これは2021年3月に書かれ,2023年1月に更新されたもので,すでに古くなっている可能性があります. 必ず,開発者のウェブサイトで変更点を確認してください.
Jupyterを使用してプロットする場合は,多数のモジュールのいずれかを使用することもできますが,それぞれに長所,短所,および短所があります. pyvista は Plotting クラスを使用するときにAPIの違いのいくつかを取り除こうとしますが,プロットはバックエンドによって異なるように見えます.また,バックエンドが異なると要件も異なり,展開環境をサポートしない場合があります.
次の表に,jupyterノートブックプロットモジュールで使用されるさまざまな機能とテクノロジを示します.
Jupyterノートブック3 Dモジュール |
|||
レンダリングの場所 |
バックエンド |
フレームバッファが必要 |
|
trame |
クライアントとサーバー |
vtk.js と vtk |
オプション |
panel |
クライアント |
vtk.js |
Yes |
pythreejs |
クライアント |
threejs |
いいえ |
ipygany |
クライアント |
threejs |
いいえ |
trame, ipygany, pythreejs 以外のモジュールはフレームバッファを必要とし,ヘッドレス環境では pyvista.start_xvfb() でセットアップを行うことができます.しかし,システムパッケージをインストールできないGoogle Colabでは, threejs や trame-backend の 'client' のような,サーバサイドレンダリングやフレームバッファを必要としないモジュールにこだわる必要があります( PyVista用Jupyterバックエンドをtrame化する を参照).
フレームバッファを必要とするバックエンドのためのヘッドレス環境へのインストールの詳細については, インストール を参照してください.個々のパッケージをインストールする場合,簡単な pip install <package> を使用してJupyterlab 3互換パッケージをインストールできます.詳細は,他のパッケージのインストール手順を参照してください.
PyVistaでの使用法#
jupyterのプロッティングバックエンドを設定するには2つの方法があります. まず, Plotter.show() や dataset.plot() の ``jupyter_backend` パラメータを設定することで,プロットごとに設定することができます. また, pyvista.set_jupyter_backend() でグローバルに設定することもできます. 詳細はこちらをご覧ください.
import pyvista as pv
pv.set_jupyter_backend('trame')
- set_jupyter_backend(backend)[ソース]#
Jupyterノートブックのプロットバックエンドを設定します.
- パラメータ:
- backend
str プロット時に使用するJupyterバックエンドです.次のいずれかである必要があります.
'ipyvtklink': リモートでレンダリングし,結果のVTKイメージをクライアントにストリーミングします.すべてのVTKメソッドをサポートしますが,リモートレンダリングのために遅延が発生します.ヘッドレスサーバーで表示する場合は,仮想フレームバッファをセットアップする必要があります.ipyvtklinkがインストールされている必要があります.'panel': VTKレンダーウィンドウをvtkjsオブジェクトに変換し,それをjupyterlabで可視化します.ほとんどのVTKオブジェクトをサポートします.ヘッドレスサーバーで表示する場合は,仮想フレームバッファをセットアップする必要があります.panelがインストールされている必要があります.'ipygany': すべてのメッシュをipyganyメッシュに変換し,クライアント側でレンダリングするメッシュをストリーミングします.VTKメッシュをサポートしていますが,他にはほとんどありません.noneを除き,これは仮想フレームバッファを必要としない唯一の方法です.ipyganyがインストールされている必要があります.'pythreejs'`` : すべてのメッシュを
pythreejsのメッシュに変換し,それらをストリームしてクライアント側でレンダリングします.ipyganyを除けば,この方法は仮想フレームバッファを必要としない唯一の方法です. 必ずpythreejsがインストールされている必要があります.'static': Jupyterlab環境内に単一の静的イメージを表示します.ヘッドレスサーバーで表示する場合も仮想フレームバッファをセットアップする必要がありますが,追加のモジュールをインストールする必要はありません.'client': VTK.jsのクライアントサイドでレンダリングするシーングラフを,trameを通してエクスポート/シリアライズすることができます.trameとjupyter-server-proxyがインストールされている必要があります.'server': リモートでレンダリングを行い,生成されたVTKイメージをtrameを用いてクライアントにストリームバックします.これは'ipyvtklink'バックエンドを置き換えるもので,より良いパフォーマンスを発揮します.ほとんどの VTK 機能をサポートしていますが,リモートレンダリングによる小さな遅延に悩まされています.ヘッドレスサーバで表示する場合は,仮想フレームバッファをセットアップする必要があります.クラウド/リモートJupyterインスタンスでは,少なくともtrameとjupyter-server-proxyがインストールされている必要があります.このモードは'trame'というエイリアスでもあります.'trame':'server'と'client'の両方を一つのバックエンドに統合したTrameベースのフルバックエンドです.これには仮想フレームバッファが必要です.'none': jupyterlab内にプロットを表示せず,専用のVTKレンダリングウィンドウを使用して表示します.これは,仮想フレームバッファがあっても,ヘッドレスサーバー上では何も生成しません.
- backend
例
pythreejsバックエンドを有効にします.
>>> import pyvista as pv >>> pv.set_jupyter_backend('pythreejs')
ipygany バックエンドを有効にします.
>>> import pyvista as pv >>> pv.set_jupyter_backend('ipygany')
panelバックエンドを有効にします.
>>> pv.set_jupyter_backend('panel')
ipyvtklink バックエンドを有効にします.
>>> pv.set_jupyter_backend('ipyvtklink')
Trameバックエンドを有効にします.
>>> pv.set_jupyter_backend('trame')
静止画像を表示するだけです.
>>> pv.set_jupyter_backend('static')
JupyterLab内のすべてのプロットを無効にし,準のデスクトップVTKレンダリングウィンドウを使用して表示します.
>>> pv.set_jupyter_backend(None)